In a cloud computing environment, computing is delivered as a service rather than a product, whereby shared resources, software and information are provided to computers and other devices as a metered service over a network, such as the Internet. In such an environment, computation, software, data access and storage services are provided to users that do not require knowledge of the physical location and configuration of the system that delivers the services.
A “software stack” is a special type of software definition that is used identify groups of software (e.g., operating system, middleware applications, user supplied applications) to install at the same time and in a specific sequence on target systems. A software stack can include installable files and software definitions for software products, software patches, and other software stacks. Software stacks serve several purposes, such as consistently installing the same software in the correct order and with the same configuration on managed systems. Also, software stacks can be added to computer templates so that the managed systems that are not compliant with the software stack can be easily identified. Furthermore, software stacks can be installed on individual systems or added to computer templates for automatic installation on provisioned servers.
Software stacks can be deployed, such as in the cloud environment, using a list of software definitions or an image. Multiple instances of each these software stacks may be deployed in the cloud environment, including the various software components (e.g., operating system, middleware and other applications) that comprise the software stacks. Some of these software components (e.g., Red Hat Enterprise Linux® 6.1 operating system) may be used in multiple software stacks.
If the cloud administrator knew which software components in the deployed software stacks were most popular (i.e., have the highest demand) at a given moment in time, then the cloud administrator may be able to make those resources more readily available at that time thereby more efficiently using the resources of the cloud environment. However, it is currently very difficult for the cloud administrator to quantify which software components of the software stacks deployed in the cloud environment are in the highest demand since the number of deployed software stacks is large and users are constantly adding and removing workloads from the cloud environment.
As a result, cloud administrators cannot currently allocate resources of the cloud environment efficiently to meet changes in user demands as priorities change.